home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacApp Release 10 / MacApp Release 10 - HD Ready / Tools / UStringHandle.cp < prev    next >
Encoding:
Text File  |  1996-04-03  |  4.3 KB  |  131 lines  |  [TEXT/MPS ]

  1. //----------------------------------------------------------------------------------------
  2. // UStringHandle.cp
  3. // Copyright © 1985-96 by Apple Computer, Inc. All rights reserved.
  4. //----------------------------------------------------------------------------------------
  5.  
  6. /*
  7.          3/30/96    srf        Use TDynamicArray. 
  8.     Change History:
  9.          3/18/95    TWB        Change Free methods to destructors. 
  10.         10/12/94    TWB        Split off from MABuildTool. 
  11.          7/13/94    TWB        Merge with MABuildToolFT and MABuildToolRSRC. 
  12.          7/13/94    TWB        Update version to 3.1.1. 
  13.          6/27/94    TWB        BuildFolder can now be accessed within the
  14.                             MAMake file. 
  15. */
  16.  
  17. #ifndef __USTRINGHANDLE__
  18. #include "UStringHandle.h"
  19. #endif
  20.  
  21. //----------------------------------------------------------------------------------------
  22. // NewTStringHandle: 
  23. //----------------------------------------------------------------------------------------
  24. #pragma segment TRes
  25.  
  26. TStringHandle* NewTStringHandle()
  27. {
  28.     TStringHandle* aTStringHandle;
  29.     
  30.     aTStringHandle = new TStringHandle;
  31.     aTStringHandle->IStringHandle();
  32.     return aTStringHandle;
  33. }
  34.  
  35. //========================================================================================
  36. // CLASS TStringHandle
  37. //========================================================================================
  38. #undef Inherited
  39. #define Inherited TObject
  40.  
  41. #pragma segment TRes
  42. MA_DEFINE_CLASS_M1(TStringHandle, Inherited);
  43.  
  44. //----------------------------------------------------------------------------------------
  45. // TStringHandle constructor
  46. //----------------------------------------------------------------------------------------
  47. #pragma segment TRes
  48.  
  49. TStringHandle::TStringHandle() :
  50.     fText(NULL)
  51. {
  52. }
  53.  
  54. //----------------------------------------------------------------------------------------
  55. // TStringHandle::WriteToFile: 
  56. //----------------------------------------------------------------------------------------
  57. #pragma segment TRes
  58.  
  59. void TStringHandle::WriteToFile(FILE* theFile)
  60. {
  61.     fwrite((*fText)[0], (size_t)fText->GetSize(), 1, theFile);
  62. }
  63.  
  64. //----------------------------------------------------------------------------------------
  65. // TStringHandle::AsStr255: 
  66. //----------------------------------------------------------------------------------------
  67. #pragma segment TRes
  68.  
  69. void TStringHandle::AsStr255 (CStr255& theString)
  70. {
  71.     theString.Length() = Min(fText->GetSize(), kStr255Len);;
  72.     theString.CopyFrom((*fText)[0], theString.Length());
  73. }
  74.  
  75. //----------------------------------------------------------------------------------------
  76. // TStringHandle::AsStr255: 
  77. //----------------------------------------------------------------------------------------
  78. #pragma segment TRes
  79.  
  80. CStr255 TStringHandle::AsStr255 ()
  81. {
  82.     return CStr255((*fText)[0], Min(fText->GetSize(), kStr255Len));
  83. }
  84.  
  85. //----------------------------------------------------------------------------------------
  86. // TStringHandle::IStringHandle: 
  87. //----------------------------------------------------------------------------------------
  88. #pragma segment TRes
  89.  
  90. void TStringHandle::IStringHandle()
  91. {
  92.     fText = new TDynamicArray;
  93.     fText->IDynamicArray(0, sizeof(unsigned char));
  94.     fText->fAllocationIncrement = kStr255Len + 1;
  95. }
  96.  
  97. //----------------------------------------------------------------------------------------
  98. // TStringHandle::Free: 
  99. //----------------------------------------------------------------------------------------
  100. #pragma segment TRes
  101.  
  102. TStringHandle::~TStringHandle()
  103. {
  104.     fText = (TDynamicArray*)FreeIfObject(fText);
  105. }
  106.  
  107. //----------------------------------------------------------------------------------------
  108. // TStringHandle::Catenate: 
  109. //----------------------------------------------------------------------------------------
  110. #pragma segment TRes
  111.  
  112. void TStringHandle::Catenate(const CStr255& theString)
  113. {
  114.     fText->InsertElementsBefore(fText->GetSize() + 1, &theString[1], theString.Length());
  115. }
  116.  
  117. //----------------------------------------------------------------------------------------
  118. // TStringHandle::Catenate: 
  119. //----------------------------------------------------------------------------------------
  120. #pragma segment TRes
  121.  
  122. void TStringHandle::CatenateToFront(const CStr255& theString)
  123. {
  124.     fText->InsertElementsBefore(1, &theString[1], theString.Length());
  125. }
  126.  
  127. //----------------------------------------------------------------------------------------
  128. // End of UStringHandle.cp
  129.  
  130. #pragma segment Inline
  131.